package cn.xeblog.plugin.action.handler.command;

import cn.xeblog.plugin.action.ConsoleAction;
import cn.xeblog.plugin.cache.DataCache;

/**
 * 命令处理器抽象类
 * @author anlingyi
 * @date 2020/8/19
 */
public abstract class AbstractCommandHandler implements CommandHandler {

  /**
   * 参数检查
   *
   * @param args 参数
   * @return true, 通过，否则 ，false
   */
  protected boolean check(String[] args) {
    // 当前用户是否在线
    if (DataCache.isOnline) {
      return true;
    }
    // 不在线提示登录消息
    ConsoleAction.showLoginMsg();
    return false;
  }

  @Override
  public final void handle(String[] args) {
    // 检查参数
    if (!check(args)) {
      return;
    }
    // 过程
    process(args);
  }

  /**
   * 过程
   *
   * @param args 参数
   */
  protected abstract void process(String[] args);

}
